/**
 * @type {Number}
 *
 * @properties={typeid:35,uuid:"95255DCE-979C-4661-BDE1-81D34F01DF23",variableType:8}
 */
var efectivo_deposito = null;

/**
 * @type {JSFoundSet<db:/infocom/saldos_caja>}
 * 
 * @properties={typeid:35,uuid:"92D9D800-D330-4819-B5F8-622E23EE2171",variableType:-4}
 */
var fs_saldo_caja = databaseManager.getFoundSet(databaseManager.getDataSourceServerName(controller.getDataSource()),'saldos_caja');

/**
 * @type {Number}
 *
 * @properties={typeid:35,uuid:"597DB710-D108-4D4F-9441-384F353B68B9",variableType:8}
 */
var saldo_caja = null;

/**
 * @properties={typeid:35,uuid:"E06ED4FB-7D43-42FE-938C-95E2C6D35635",variableType:-4}
 */
var total_cheques = null;

/**
 * Callback method for when form is shown.
 *
 * @properties={typeid:24,uuid:"AB612F7A-9500-4B90-A9A2-5331209E2050"}
 */
function iniciar() 
{
	databaseManager.setAutoSave(false)
	controller.newRecord();	
	fecha 					= application.getServerTimeStamp();
	cuentas_cyb_id			= null;
	globals.gCuenta_cyb		= null;
	efectivo_deposito		= 0;
	saldo_caja				= null;
	globals.gtotal_cheques	= 0;
	moneda_id				= globals.zparam_moneda_default; 
}

/**
 * Perform the element default action.
 *
 * @param {JSEvent} event the event that triggered the action
 *
 * @properties={typeid:24,uuid:"3004CBFE-0B22-4A1C-BE67-31A67D75449E"}
 */
function buscar(event) 
{
	if (globals.gCuenta_cyb==null)
	{
		globals.DIALOGS.showWarningDialog('Aviso','Debe informar cuenta de caja','OK')
	}
	else
	{
		// llamar al otro form para seleccionar los cheques en caja
		globals.formEnVentana('cheques_a_dep','chq_en_caja','Cheques en Caja')
	// vuelve del anterior form con las columnas de la tabla boleta_detalle dadas de alta
	// con los datos de los cheques marcados
	}
}

/**
 * Perform the element default action.
 *
 * @param {JSEvent} event the event that triggered the action
 *
 * @properties={typeid:24,uuid:"0014C7AF-7A3F-4135-BDF4-B6F62C185818"}
 * @AllowToRunInFind
 */
function confirmar(event) 
{
	var $concepto = 'Boleta de depósito';
	var estado = validar_importe();		
	if (estado == false)
		return false;
	
	if (cuentas_cyb_id == null)
	{
		globals.DIALOGS.showWarningDialog('Aviso','Debe informar cuenta de banco','OK')
		return false;
	}
	if (globals.gCuenta_cyb == null)
	{
		globals.DIALOGS.showWarningDialog('Aviso','Debe informar cuenta de caja','OK')
		return false;
	}
	if (efectivo_deposito == 0 && boleta_cabecera_to_boleta_detalle.getSize() == 0)
	{
		globals.DIALOGS.showWarningDialog('Aviso',  'El importe total es cero' ,  "OK")
		return false
	}
	// definir foundset= no existe relacion por boleta_detalle_id com movim_cyb ya que no tiene el campo
	var fs_movim_cyb = databaseManager.getFoundSet(databaseManager.getDataSourceServerName(controller.getDataSource()),'movim_cyb')
	total_cheques = 0;
	// por cada cheque 
	for (var i = 1 ; i <= boleta_cabecera_to_boleta_detalle.getSize(); i++)
	{
		boleta_cabecera_to_boleta_detalle.setSelectedIndex(i)
		// regrabar estado de cheque
		boleta_cabecera_to_boleta_detalle.boleta_detalle_to_cheques.estado = globals.zconf_chq_depositado
		boleta_cabecera_to_boleta_detalle.boleta_detalle_to_cheques.marcado_cheque = 0
		
		// ingreso a bancos
		fs_movim_cyb.newRecord()
		fs_movim_cyb.cheque_id			= boleta_cabecera_to_boleta_detalle.cheque_id
		fs_movim_cyb.cod_movim			= globals.zconf_cyb_cod_movim_ingreso
		fs_movim_cyb.concepto			= $concepto + ' - ' + boleta_nro + ' - Cheque ' + boleta_cabecera_to_boleta_detalle.cheque_id // 13/07/2010
		fs_movim_cyb.cuentas_cyb_id		= cuentas_cyb_id
		fs_movim_cyb.empresa_id			= 0 
		fs_movim_cyb.fecha_conciliacion = null
		fs_movim_cyb.fecha_movim		= fecha
		fs_movim_cyb.importe			= boleta_cabecera_to_boleta_detalle.importe
		fs_movim_cyb.imputacion_id		= globals.zconf_cyb_imputacion_deposito
		fs_movim_cyb.marca_conciliacion	= 0  
		fs_movim_cyb.referencia			= boleta_cabecera_to_boleta_detalle.boleta_detalle_to_cheques.cheque_nro
		fs_movim_cyb.valor_id			= boleta_cabecera_to_boleta_detalle.boleta_detalle_to_cheques.valor_id
		
		// egreso caja
		fs_movim_cyb.newRecord()
		fs_movim_cyb.cheque_id			= boleta_cabecera_to_boleta_detalle.cheque_id
		fs_movim_cyb.cod_movim			= globals.zconf_cyb_cod_movim_egreso
		fs_movim_cyb.concepto			= $concepto + ' - ' + boleta_nro + ' - Cheque ' + boleta_cabecera_to_boleta_detalle.cheque_id //13/07/2010 
		fs_movim_cyb.cuentas_cyb_id		= boleta_cabecera_to_boleta_detalle.boleta_detalle_to_cheques.cuentas_cyb_id //? que va aqui? la cuenta que tenia el cheque?
		fs_movim_cyb.empresa_id			= 0 
		fs_movim_cyb.fecha_conciliacion	= null
		fs_movim_cyb.fecha_movim		= fecha
		fs_movim_cyb.importe			= boleta_cabecera_to_boleta_detalle.importe
		fs_movim_cyb.imputacion_id		= globals.zconf_cyb_imputacion_deposito // 13/07/2010
		fs_movim_cyb.marca_conciliacion	= 0 
		fs_movim_cyb.referencia			= boleta_cabecera_to_boleta_detalle.boleta_detalle_to_cheques.cheque_nro
		fs_movim_cyb.valor_id			= boleta_cabecera_to_boleta_detalle.boleta_detalle_to_cheques.valor_id
		
		// acumular total de cheques
		total_cheques += boleta_cabecera_to_boleta_detalle.importe;
		
	}// fin del for
	
	importe_cheques 	= total_cheques
	importe_efectivo 	= efectivo_deposito
	importe_total 		= total_cheques + efectivo_deposito
		
	// deposito:descontar del saldo de la caja efectivo y cheques
	fs_saldo_caja.saldo_efectivo -= efectivo_deposito;
	fs_saldo_caja.saldo_valores  -= total_cheques;
	
	
	// generar movim_cyb de ingreso de efectivo al banco
	if (efectivo_deposito > 0)
	{
		fs_movim_cyb.newRecord()
		fs_movim_cyb.cheque_id			= null // 03/04/2013  boleta_cabecera_to_boleta_detalle.cheque_id = no debe tener cheque_id en efectivo
		fs_movim_cyb.cod_movim			= globals.zconf_cyb_cod_movim_ingreso
		fs_movim_cyb.concepto			= $concepto + ' - ' + boleta_nro + ' - efectivo'  //13/07/2010
		fs_movim_cyb.cuentas_cyb_id		= cuentas_cyb_id
		fs_movim_cyb.empresa_id			= 0 
		fs_movim_cyb.fecha_conciliacion	= null
		fs_movim_cyb.fecha_movim		= fecha
		fs_movim_cyb.importe			= efectivo_deposito
		fs_movim_cyb.imputacion_id		= globals.zconf_cyb_imputacion_deposito
		fs_movim_cyb.marca_conciliacion	= 0  
		fs_movim_cyb.referencia			= 'Efectivo'
		fs_movim_cyb.valor_id			= 1  // efectivo
	}
	
	// generar movim_cyb de egreso de efectivo de la caja ingresada
	if (efectivo_deposito > 0)
	{
		fs_movim_cyb.newRecord()
		fs_movim_cyb.cheque_id			= null
		fs_movim_cyb.cod_movim			= globals.zconf_cyb_cod_movim_egreso
		fs_movim_cyb.concepto			= $concepto + ' - ' + boleta_nro + ' - efectivo'
		fs_movim_cyb.cuentas_cyb_id		= globals.gCuenta_cyb
		fs_movim_cyb.empresa_id			= 0 
		fs_movim_cyb.fecha_conciliacion	= null
		fs_movim_cyb.fecha_movim		= fecha
		fs_movim_cyb.importe			= efectivo_deposito
		fs_movim_cyb.imputacion_id		= globals.zconf_cyb_imputacion_deposito
		fs_movim_cyb.marca_conciliacion	= 0  
		fs_movim_cyb.referencia			= 'Efectivo'
		fs_movim_cyb.valor_id			= 1  // efectivo                   
	}
	caja_origen_id = globals.gCuenta_cyb
	databaseManager.startTransaction()
	estado = databaseManager.saveData();
	if (estado == true)
	{
		databaseManager.commitTransaction()
		globals.DIALOGS.showInfoDialog('Depósitos', 'Boleta de deposito ' + boleta_nro + ' generada' ,  "OK")
		iniciar();
	}
	else
	{
		databaseManager.rollbackTransaction()
		globals.DIALOGS.showWarningDialog('Aviso', 'NO se pudo realizar el depósito' ,  "OK")
		cancelar();
		iniciar();
	}
	return true
}

/**
 *
 * @properties={typeid:24,uuid:"72DC958E-E778-4623-A944-7265594DCC59"}
 */
function cancelar() 
{
	databaseManager.revertEditedRecords()
}

/**
 * Perform the element default action.
 *
 * @param {JSEvent} event the event that triggered the action
 *
 * @properties={typeid:24,uuid:"FD1DE4F4-4FD1-473E-A07B-81BBD7883033"}
 */
function limpiar(event) 
{
	cancelar()
	iniciar()
}

/**
 * Handle changed data.
 *
 * @param {Object} oldValue old value
 * @param {Object} newValue new value
 * @param {JSEvent} event the event that triggered the action
 *
 * @returns {Boolean}
 *
 * @properties={typeid:24,uuid:"6FB488A3-EBEF-403F-843D-4334C63B4960"}
 * @AllowToRunInFind
 */
function elige_caja(oldValue, newValue, event) 
{
	var estado=fs_saldo_caja.find();
	if (estado==true)
	{
		fs_saldo_caja.cuentas_cyb_id=globals.gCuenta_cyb;
		var found=fs_saldo_caja.search();
		if (found==1)
			saldo_caja=fs_saldo_caja.saldo_efectivo;
		else
		{
			saldo_caja=null;
			globals.DIALOGS.showWarningDialog('Aviso','No existe saldo de caja elegida ','OK')
			return false;
		}
	}
	return true
}

/**
 * Handle changed data.
 *
 * @properties={typeid:24,uuid:"DA562164-C2BB-4163-864F-5361D43F59DC"}
 */
function validar_importe() 
{
	if (efectivo_deposito > fs_saldo_caja.saldo_efectivo)
	{
		globals.DIALOGS.showWarningDialog('Aviso','Importe a depositar ' + efectivo_deposito + ' es mayor que el saldo ' + fs_saldo_caja.saldo_efectivo + ' de la caja ingresada','OK')	
	}
}
